﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!--=========================================================================================-->
	<xs:simpleType name="var">
		<xs:restriction base="xs:string">
			<xs:pattern value="\{[$]([0-9a-zA-Z_-]{1,16})\}" />
		</xs:restriction>
	</xs:simpleType>
	<!--=========================================================================================-->
	<xs:simpleType name="bool">
		<xs:union memberTypes="xs:boolean var"/>
	</xs:simpleType>
	<!--=========================================================================================-->
	<xs:simpleType name="double">
		<xs:union memberTypes="xs:double var"/>
	</xs:simpleType>
	<!--=========================================================================================-->
	<xs:simpleType name="int">
		<xs:union memberTypes="xs:int var"/>
	</xs:simpleType>
	<!--=========================================================================================-->
	<xs:annotation id="quantum"/>
	<!--=========================================================================================-->
	<xs:annotation id="color"/>
	<!--=========================================================================================-->
	<xs:annotation id="enums"/>
	<!--=========================================================================================-->
	<xs:annotation id="ColorProfile"/>
	<!--=========================================================================================-->
	<xs:complexType name="coordinate">
		<xs:annotation id="coordinate"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="coordinates">
		<xs:sequence>
			<xs:element name="coordinate" minOccurs="3" maxOccurs="unbounded" type="coordinate"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="doubleArray">
		<xs:sequence>
			<xs:element name="value" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="variable" type="var" use="optional"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="drawable">
		<xs:group ref="drawables" />
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="drawables">
		<xs:sequence>
			<xs:group ref="drawables" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="empty">
		<xs:complexContent>
			<xs:restriction base="xs:anyType"/>
		</xs:complexContent>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:simpleType name="geometry">
		<xs:restriction base="xs:string">
			<xs:pattern value="((\d+x?\d*)|(\d*x\d+))([+-]\d+[+-]\d+)?([\>\&lt;\@\%^!]{1,2})?"/>
		</xs:restriction>
	</xs:simpleType>
	<!--=========================================================================================-->
	<xs:complexType name="image">
		<xs:sequence>
			<xs:element name="settings" minOccurs="0">
				<xs:complexType>
					<xs:annotation id="magickReadSettings"/>
				</xs:complexType>
			</xs:element>
			<xs:group ref="actions" />
		</xs:sequence>
		<xs:attribute name="fileName" type="xs:string"/>
		<xs:attribute name="id" type="xs:string"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="imageProfile">
		<xs:annotation id="imageProfile"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="montageSettings">
		<xs:annotation id="montageSettings"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="paths">
		<xs:sequence>
			<xs:group ref="paths" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pathArc">
		<xs:annotation id="pathArc"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pathArcs">
		<xs:sequence>
			<xs:element name="coordinate" maxOccurs="unbounded" type="pathArc"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pathCurveto">
		<xs:annotation id="pathCurveto"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pathCurvetos">
		<xs:sequence>
			<xs:element name="coordinate" maxOccurs="unbounded" type="pathCurveto"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pathQuadraticCurveto">
		<xs:annotation id="pathQuadraticCurveto"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pathQuadraticCurvetos">
		<xs:sequence>
			<xs:element name="coordinate" maxOccurs="unbounded" type="pathCurveto"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="pixelStorageSettings">
		<xs:annotation id="pixelStorageSettings"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="profile">
		<xs:sequence>
			<xs:choice>
				<xs:element name="imageProfile" type="imageProfile"/>
				<xs:element name="colorProfile">
					<xs:complexType>
						<xs:attribute name="name" type="ColorProfile"/>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="quantizeSettings">
		<xs:annotation id="quantizeSettings"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="sparseColorArg">
		<xs:annotation id="sparseColorArg"/>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:complexType name="sparseColorArgs">
		<xs:sequence>
			<xs:element name="sparseColorArg" maxOccurs="unbounded" type="sparseColorArg"/>
		</xs:sequence>
	</xs:complexType>
	<!--=========================================================================================-->
	<xs:group name="actions">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:annotation id="image-actions"/>
				<xs:element name="draw" type="drawables"/>
				<xs:group ref="clone"/>
			</xs:choice>
			<xs:choice>
				<xs:group ref="clone"/>
				<xs:element name="write" minOccurs="0">
					<xs:complexType>
						<xs:attribute name="fileName" type="xs:string"/>
						<xs:attribute name="id" type="xs:string"/>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	<!--=========================================================================================-->
	<xs:group name="collection">
		<xs:sequence>
			<xs:element name="collection">
				<xs:complexType>
					<xs:sequence>
						<xs:group ref="read" minOccurs="2" maxOccurs="unbounded"/>
						<xs:choice minOccurs="0" maxOccurs="unbounded">
							<xs:annotation id="collection-actions"/>
						</xs:choice>
						<xs:element name="write" minOccurs="0">
							<xs:complexType>
								<xs:attribute name="fileName" use="required" type="xs:string" />
							</xs:complexType>
						</xs:element>
						<xs:choice>
							<xs:annotation id="collection-results"/>
						</xs:choice>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:group>
	<!--=========================================================================================-->
	<xs:group name="clone">
		<xs:sequence>
			<xs:element name="clone">
				<xs:complexType>
					<xs:group ref="actions"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:group>
	<!--=========================================================================================-->
	<xs:group name="drawables">
		<xs:sequence>
			<xs:choice>
				<xs:annotation id="drawables"/>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	<!--=========================================================================================-->
	<xs:group name="paths">
		<xs:sequence>
			<xs:choice>
				<xs:annotation id="paths"/>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	<!--=========================================================================================-->
	<xs:group name="read">
		<xs:sequence>
			<xs:element name="read" type="image"/>
		</xs:sequence>
	</xs:group>
	<!--=========================================================================================-->
	<xs:element name="msl">
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:group ref="read"/>
					<xs:group ref="collection"/>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!--=========================================================================================-->
</xs:schema>